.TH std::basic_ifstream::swap 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::basic_ifstream::swap \- std::basic_ifstream::swap

.SH Synopsis
   void swap( basic_ifstream& other );  \fI(since C++11)\fP

   Exchanges the state of the stream with those of other.

   This is done by calling basic_istream<CharT, Traits>::swap(other) and
   rdbuf()->swap(other.rdbuf()).

.SH Parameters

   other - stream to exchange the state with

.SH Return value

   \fI(none)\fP

.SH Exceptions

   May throw implementation-defined exceptions.

.SH Example


// Run this code

 #include <fstream>
 #include <iomanip>
 #include <iostream>
 #include <string>

 bool create_stream(std::fstream& fs, const std::string& path)
 {
     try
     {
         std::fstream ts{path, ts.trunc | ts.in | ts.out};
         if (ts.is_open())
         {
             ts.swap(fs); // stream objects are not copyable
             return true;
         }
     }
     catch (...)
     {
         std::cout << "Exception!\\n";
     }
     return false;
 }

 void use_stream(std::fstream& fs)
 {
     fs.seekg(0);
     std::string data;
     fs >> data;
     std::cout << "data: " << std::quoted(data) << '\\n';
 }

 int main()
 {
     std::fstream fs;
     std::string path = "/tmp/test_file.txt";
     if (create_stream(fs, path))
     {
         fs.write(path.c_str(), path.length());
         use_stream(fs);
     }
 }

.SH Possible output:

 data: "/tmp/test_file.txt"

.SH See also

   operator= moves the file stream
   \fI(C++11)\fP   \fI(public member function)\fP
   swap      swaps two basic_filebuf objects
   \fI(C++11)\fP   \fI(public member function of std::basic_filebuf<CharT,Traits>)\fP
